package cn.iocoder.yudao.framework.pay.core.client.impl.huifu;

import cn.iocoder.yudao.framework.pay.core.client.impl.AbstractPayClient;
import com.huifu.bspay.sdk.opps.core.BasePay;
import com.huifu.bspay.sdk.opps.core.config.MerConfig;
import lombok.extern.slf4j.Slf4j;
/**
 * 汇支付抽象类，实现支付宝统一的接口、以及部分实现（退款）
 */
@Slf4j
public abstract class AbstractHuifuPayClient extends AbstractPayClient<HuifuWxPayClientConfig> {
    public AbstractHuifuPayClient(Long channelId, String channelCode, HuifuWxPayClientConfig config) {
        super(channelId, channelCode, config);
    }

    protected void doInit(Boolean isDebug, String modeProd) {
        /** debug 模式，开启后有详细的日志
         */
        BasePay.debug = isDebug;
        /**
         * prodMode 模式，默认为生产模式
         * MODE_PROD = "prod"; // 生产环境
         * MODE_TEST = "test"; // 线上联调环境(针对商户联调测试)
         */
        BasePay.prodMode = modeProd;
        /**
         * 单商户模式
         */
        MerConfig merConfig = new MerConfig();
        merConfig.setProcutId(config.getProductId());
        merConfig.setSysId(config.getSysId());
        merConfig.setRsaPrivateKey(config.getRsaPrivateKey());
        merConfig.setRsaPublicKey(config.getRsaPublicKey());
//        merConfig.setHuifuId(config.getHuifuId()); // 废弃
        try {
            BasePay.initWithMerConfig(merConfig);
            log.info("[init][初始化成功][汇付支付配置]");
        } catch (Exception e) {
            log.error("[init][初始化失败][汇付支付配置]");
            throw new RuntimeException(e);
        }
    }

}
